The present invention relates, generally to systems for communicating data among remote devices, and in particular to a method and apparatus for communicating synchronous and asynchronous data between devices connected to a network or a group of interconnected networks.
Computer networks provide a way to exchange data between connected devices. The connected devices can be high speed digital computers, microprocessor based computers, simple recording devices, or a variety of other devices. Connecting multiple devices by a network and allowing the devices to exchange data eliminates the need for duplicate data storage, reduces costs, and increases productivity.
Many such network systems have been developed. They use different connection architectures, have different communications protocols, and can use either twisted pair wires, coaxial cables, optical fibers, or other physical transmission medium. Examples of common network systems are so called "local area network" systems which commonly interconnect plural "personal" computers.
In a network system, comprising plural end-user devices interconnected by a transmission medium, communications are frequently in the form of bit-serial data packets of a predetermined format. Each data packet usually contains a source address, a destination address, various supervisory or administrative data and, up to a predetermined amount of message data. An end-user device desiring to send a message to another end-user device typically accesses the transmission medium through interface units and causes the message to be communicated on the transmission medium where it is available to be received by the other end-user devices connected to the transmission medium. Because the length of a "message" may exceed the length available in a packet, the "message" may be broken into plural serial signals each of which are transmitted in one of the data packets. To transmit data the end user device passes the data packets to the interface unit, which in turn transmits the data along the transmission path after it has determined that the transmission path is not in use. An end-user device desiring to receive the data accesses the transmission medium through interface units and obtains the desired data packets therefrom. Typically, the end-user device must re-assemble message data from plural packets to reconstruct the original message.
In any data communication, and especially in data communications networks, it is common for the transmitting device and the receiving device to engage in a protocol which controls the communications process. Typically the transmission medium interface stage does not attempt to decode or sort the data packets in order to ensure message validity but utilizes network applied check words to determine data packet integrity. If the receiving device receives a message which is correct in format, and passes the network check word tests, the receiving device may send a message to the transmitting device acknowledging receipt of a valid data packet. Likewise, if the data fails to conform to the required format, or fails a check word test, the receiving device may send a non-acknowledgment message, or send no acknowledgement back to the transmitting device. If the transmitting device fails to receive acknowledgment that a valid data packet was received, it will re-transmit the packet.
The capability of such known communications systems is necessarily limited by the bandwidth of the transmission medium. When the number of devices communicating on the transmission medium exhausts the bandwidth capability of the system, no additional devices can be connected to the system, nor can the existing devices increase their message rates.
Since only one device at a time can transmit over the transmission path, if one device takes control of the network and sends a large amount of data, all the other devices must wait. Likewise, if many devices are all attempting to send data at the same time, each connected device must wait its turn. This can lead to unacceptable transmission delays unless some scheme exists to allocate use of the transmission medium.
There are many known methods of allocating access to the transmission medium. The network protocol can be such that the connected devices take turns transmitting. In such a system only one device at a time will have the privilege of transmitting, while all other devices can only receive. The privilege is passed from one device to another in a predefined order until each connected device has had an opportunity to transmit. Once the privilege has been passed to all devices on the network the cycle begins all over again. When a device gets the privilege it can transmit data if it needs to, or just pass the privilege on to the next device.
Another method is to set a maximum transmit time period. When a device takes control of the transmission medium it can only transmit for a certain period of time, after which it must relinquish control of the network.
The amount of time for a data packet to be communicated between two devices is known as the latency. If the two methods described above are combined, the maximum amount of time it takes to get the opportunity to transmit a data packet is the time it takes for the transmit privilege to complete a cycle around the network. Since the privilege may travel in a defined cycle, and since each device may have only a set amount of time to transmit, the latency is deterministic. Since not every device will necessarily want to transmit during a given cycle of the transmit privilege, the latency will vary from cycle to cycle, but will always be less than a known maximum value.
If many devices are connected to the network the maximum transmit time can be shortened to maintain a certain latency value. If fewer devices are connected to the network the maximum transmit time can be increased and the latency value will remain the same.
While the allocation scheme described above is one way to achieve a bounded, deterministic latency, other schemes also exist.
In most networks, each connected device has its own address. There are two main schemes used by network systems to ensure that transmitted data packets arrive at the right receiving device. In the first, each data packet is addressed to a particular receiving device. In the second, group addresses are used.
In the first scheme each data packet has a destination address field. The transmitting device puts a value equal to the receiving device's address into the destination address field of a data packet, then transmits the packet. The receiving device constantly scans the data packets passing over the network and receives only data packets with its own address. If the transmitting device must send a particular message to several receiving devices, this addressing scheme is inefficient since the same data packets must be sent multiple times to each receiving device. This wastes network bandwidth and slows down all devices on the network.
This approach normally uses robust transport and network protocols such as Transport Control Protocol/Internet Protocol (TCP/IP) or an International Organization for Standardized (ISO) Open System Interconnection (OSI) Compliant Network and Transport Protocol to provide error handling and packet sequencing in the presence of noise and other data traffic.
The operation of this protocol may also require that a flow control mechanism such as that described in U.S. patent application Ser. No. 452,429, filed Dec. 19, 1989, and assigned to the same entity as the assignee hereof, which is incorporated herein by reference. This patent application describes a dispersed end entity flow control technique for computer networks which can be implemented to manage data flow when the receiving device cannot accept additional data due to excessive demands on its resources.
In a group addressing system there are predefined address values corresponding to different types of data. A transmitting device will decide what type of data it is transmitting, and will put the appropriate group address in a data packet's destination address field. A receiving device looking for a particular type of data scans the destination address field of all the data packets traversing the network and selects only those with the correct group address. Since multiple receiving devices can each receive a single transmission of data packets based on the group address, duplicate transmission of data packets is not necessary. However, group addressing imposes a rigid communications structure on connected devices. The data types must be known to all connected devices, and it is difficult, if not impossible, to change the group addresses. Similarly, it may not be possible to dynamically vary groups from message to message.
In many environments it is desirable to communicate both synchronous and asynchronous signals over the same network medium. Continuous, synchronous signals such as audio and video data must be broken down into data packets at the transmitting end, transmitted across the network, then reassembled into a synchronous signal at the receiving end. In order ensure that synchronous signals appear whole to the user at the receiving end the packets must traverse the network fast enough to be inserted back into the correct position in the outgoing synchronous data stream. In practical terms this means the delay in passing a data packet from one device to another, the latency, must be bounded and deterministic. Many network standards provide this type of environment, but a low latency is essential to proper transmission of synchronous data.
Often a synchronous signal must be sent to more than one receiving device. It is also common for the intended receiving devices to vary from message to message. If the transmitting device uses the addressing method of addressing each data packet to an individual receiving device, it allows the transmitting device to select exactly who will receive the transmission. Unfortunately, precious transmission time is wasted in sending duplicate data packets to multiple devices.
If the group addressing scheme is used the transmitting device loses control over who will receive the message, and the transmitting device is unable to tell individual receiving devices to tune into a certain message. It is impossible to dynamically vary the groups on a message by message basis.
It is accordingly an object of the present invention to provide a novel method and system for transmitting synchronous data between dynamically variable groups over a standard network having deterministic bounded latency.
It is a further object of the present invention to provide a novel method and system for more efficiently using the available bandwidth of a standard network having deterministic, bounded latency during synchronous communications between dynamically variable receiving groups.
These and other objects and advantages of the present invention will be apparent to one skilled in the art from the claims and from the following detailed description when read in conjunction with the appended drawings.